package com.snaildesign.countdown.model;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import org.apache.commons.lang.builder.ToStringBuilder;


/** 
 *        @hibernate.class
 *         table="COUNT_DOWN"
 *     
*/
public class CountDown implements Serializable {

    /** identifier field */
    private String countDownId;

    /** nullable persistent field */
    private String mainTitle;

    /** nullable persistent field */
    private String subTitle;

    /** nullable persistent field */
    private Date countDownDate;

    /** nullable persistent field */
    private String logo;

    /** nullable persistent field */
    private String url;

    /** nullable persistent field */
    private String info;

    /** nullable persistent field */
    private Integer tops;

    /** nullable persistent field */
    private String remarks;

    /** persistent field */
    private com.snaildesign.countdown.model.DateType dateType;

    /** persistent field */
    private com.snaildesign.countdown.model.CountDownState countDownState;

    /** persistent field */
    private Set countDownExps;

    /** persistent field */
    private Set countDownComments;

    /** persistent field */
    private Set myCountDowns;

    /** persistent field */
    private Set favorites;

    /** full constructor */
    public CountDown(String countDownId, String mainTitle, String subTitle, Date countDownDate, String logo, String url, String info, Integer tops, String remarks, com.snaildesign.countdown.model.DateType dateType, com.snaildesign.countdown.model.CountDownState countDownState, Set countDownExps, Set countDownComments, Set myCountDowns, Set favorites) {
        this.countDownId = countDownId;
        this.mainTitle = mainTitle;
        this.subTitle = subTitle;
        this.countDownDate = countDownDate;
        this.logo = logo;
        this.url = url;
        this.info = info;
        this.tops = tops;
        this.remarks = remarks;
        this.dateType = dateType;
        this.countDownState = countDownState;
        this.countDownExps = countDownExps;
        this.countDownComments = countDownComments;
        this.myCountDowns = myCountDowns;
        this.favorites = favorites;
    }

    /** default constructor */
    public CountDown() {
    }

    /** minimal constructor */
    public CountDown(String countDownId, com.snaildesign.countdown.model.DateType dateType, com.snaildesign.countdown.model.CountDownState countDownState, Set countDownExps, Set countDownComments, Set myCountDowns, Set favorites) {
        this.countDownId = countDownId;
        this.dateType = dateType;
        this.countDownState = countDownState;
        this.countDownExps = countDownExps;
        this.countDownComments = countDownComments;
        this.myCountDowns = myCountDowns;
        this.favorites = favorites;
    }

    /** 
     *            @hibernate.id
     *             generator-class="assigned"
     *             type="java.lang.String"
     *             column="COUNT_DOWN_ID"
     *         
     */
    public String getCountDownId() {
        return this.countDownId;
    }

    public void setCountDownId(String countDownId) {
        this.countDownId = countDownId;
    }

    /** 
     *            @hibernate.property
     *             column="MAIN_TITLE"
     *             length="100"
     *         
     */
    public String getMainTitle() {
        return this.mainTitle;
    }

    public void setMainTitle(String mainTitle) {
        this.mainTitle = mainTitle;
    }

    /** 
     *            @hibernate.property
     *             column="SUB_TITLE"
     *             length="100"
     *         
     */
    public String getSubTitle() {
        return this.subTitle;
    }

    public void setSubTitle(String subTitle) {
        this.subTitle = subTitle;
    }

    /** 
     *            @hibernate.property
     *             column="COUNT_DOWN_DATE"
     *             length="7"
     *         
     */
    public Date getCountDownDate() {
        return this.countDownDate;
    }

    public void setCountDownDate(Date countDownDate) {
        this.countDownDate = countDownDate;
    }

    /** 
     *            @hibernate.property
     *             column="LOGO"
     *             length="200"
     *         
     */
    public String getLogo() {
        return this.logo;
    }

    public void setLogo(String logo) {
        this.logo = logo;
    }

    /** 
     *            @hibernate.property
     *             column="URL"
     *             length="100"
     *         
     */
    public String getUrl() {
        return this.url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    /** 
     *            @hibernate.property
     *             column="INFO"
     *             length="200"
     *         
     */
    public String getInfo() {
        return this.info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    /** 
     *            @hibernate.property
     *             column="TOPS"
     *             length="22"
     *         
     */
    public Integer getTops() {
        return this.tops;
    }

    public void setTops(Integer tops) {
        this.tops = tops;
    }

    /** 
     *            @hibernate.property
     *             column="REMARKS"
     *             length="200"
     *         
     */
    public String getRemarks() {
        return this.remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    /** 
     *            @hibernate.many-to-one
     *             not-null="true"
     *            @hibernate.column name="DATE_TYPE_ID"         
     *         
     */
    public com.snaildesign.countdown.model.DateType getDateType() {
        return this.dateType;
    }

    public void setDateType(com.snaildesign.countdown.model.DateType dateType) {
        this.dateType = dateType;
    }

    /** 
     *            @hibernate.many-to-one
     *             not-null="true"
     *            @hibernate.column name="STATE_ID"         
     *         
     */
    public com.snaildesign.countdown.model.CountDownState getCountDownState() {
        return this.countDownState;
    }

    public void setCountDownState(com.snaildesign.countdown.model.CountDownState countDownState) {
        this.countDownState = countDownState;
    }

    /** 
     *            @hibernate.set
     *             lazy="true"
     *             inverse="true"
     *             cascade="none"
     *            @hibernate.collection-key
     *             column="COUNT_DOWN_ID"
     *            @hibernate.collection-one-to-many
     *             class="com.snaildesign.countdown.model.CountDownExp"
     *         
     */
    public Set getCountDownExps() {
        return this.countDownExps;
    }

    public void setCountDownExps(Set countDownExps) {
        this.countDownExps = countDownExps;
    }

    /** 
     *            @hibernate.set
     *             lazy="true"
     *             inverse="true"
     *             cascade="none"
     *            @hibernate.collection-key
     *             column="COUNT_DOWN_ID"
     *            @hibernate.collection-one-to-many
     *             class="com.snaildesign.countdown.model.CountDownComment"
     *         
     */
    public Set getCountDownComments() {
        return this.countDownComments;
    }

    public void setCountDownComments(Set countDownComments) {
        this.countDownComments = countDownComments;
    }

    /** 
     *            @hibernate.set
     *             lazy="true"
     *             inverse="true"
     *             cascade="none"
     *            @hibernate.collection-key
     *             column="COUNT_DOWN_ID"
     *            @hibernate.collection-one-to-many
     *             class="com.snaildesign.countdown.model.MyCountDown"
     *         
     */
    public Set getMyCountDowns() {
        return this.myCountDowns;
    }

    public void setMyCountDowns(Set myCountDowns) {
        this.myCountDowns = myCountDowns;
    }

    /** 
     *            @hibernate.set
     *             lazy="true"
     *             inverse="true"
     *             cascade="none"
     *            @hibernate.collection-key
     *             column="COUNT_DOWN_ID"
     *            @hibernate.collection-one-to-many
     *             class="com.snaildesign.countdown.model.Favorite"
     *         
     */
    public Set getFavorites() {
        return this.favorites;
    }

    public void setFavorites(Set favorites) {
        this.favorites = favorites;
    }

    public String toString() {
        return new ToStringBuilder(this)
            .append("countDownId", getCountDownId())
            .toString();
    }

}
